package com.jinke.api.modules.third.shippo.model.response;

import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;

import java.util.List;

/**
 * @projectName:
 * @title: ShippoDeclarationResponse
 * @description: 创建海关申报单响应
 * @see:
 * @author: hhp
 * @version: 1.0.0
 * @createTime: 2024/8/28 11:54
 */
@Data
public class ShippoDeclarationResponse {
    /**
     *
     */
    @JSONField(name = "aes_itn")
    private String aesItn;
    /**
     * B13A 选项详情可通过加拿大出口报告系统 （CERS） 提交 B13A 加拿大出口申报单来获取。 有关申报加拿大商业出口的更多信息。 此处提供允许的值
     * 枚举： “FILED_ELECTRONICALLY” “SUMMARY_REPORTING” “NOT_REQUIRED”
     */
    @JSONField(name = "b13a_filing_option")
    private String b13aFilingOption;
    @JSONField(name = "b13a_number")
    private String b13aNumber;
    private String certificate;
    /**
     * 必填
     * 表示certify_signer已如实提供本报关单的全部信息。
     */
    private Boolean certify;
    /**
     * 必填
     * 创建海关申报单并负责所有报关单有效性的人员的姓名 提供的信息。
     */
    @JSONField(name = "certify_signer")
    private String certifySigner;
    @JSONField(name = "commercial_invoice")
    private Boolean commercialInvoice;
    @JSONField(name = "contents_explanation")
    private String contentsExplanation;
    private String disclaimer;
    @JSONField(name = "exporter_identification")
    private ExporterIdentification exporterIdentification;
    @JSONField(name = "exporter_reference")
    private String exporterReference;
    @JSONField(name = "importer_reference")
    private String importerReference;
    @JSONField(name = "is_vat_collected")
    private Boolean isVatCollected;
    private String invoice;
    private String license;
    private String metadata;
    private String notes;
    @JSONField(name = "address_importer")
    private String addressImporter;
    /**
     * 装运的货物类型。
     * 此处提供允许的值
     *
     * 枚举： "DOCUMENTS" "GIFT" "SAMPLE" "MERCHANDISE" "HUMANITARIAN_DONATION" "RETURN_MERCHANDISE" "OTHER"
     */
    @JSONField(name = "contents_type")
    private String contentsType;
    @JSONField(name = "eel_pfc")
    private String eelPfc;
    private String incoterm;
    @JSONField(name = "invoiced_charges")
    private InvoicedCharges invoicedCharges;
    private List<String> items;
    @JSONField(name = "non_delivery_option")
    private String nonDeliveryOption;
    @JSONField(name = "object_created")
    private String objectCreated;
    @JSONField(name = "object_id")
    private String objectId;
    @JSONField(name = "object_owner")
    private String objectOwner;
    @JSONField(name = "object_state")
    private String objectState;
    @JSONField(name = "object_updated")
    private String objectUpdated;
    private Boolean test;
    @Data
    public static class ExporterIdentification {
        @JSONField(name = "eori_number")
        private String eoriNumber;
        @JSONField(name = "tax_id")
        private TaxId taxId;
    }
    @Data
    public static class TaxId {
        private String number;
        private String type;
    }
    /*@Data
    public static class AddressImporter {
        private String name;
        private String company;
        private String street1;
        private String street2;
        private String street3;
        @JSONField(name = "street_no")
        private String streetNo;
        private String city;
        private String state;
        private String zip;
        private String country;
        private String phone;
        private String email;
        @JSONField(name = "is_residential")
        private Boolean is_residential;
    }*/
    @Data
    public static class InvoicedCharges {
        private String currency;
        @JSONField(name = "total_shipping")
        private String totalShipping;
        @JSONField(name = "total_taxes")
        private String totalTaxes;
        @JSONField(name = "total_duties")
        private String totalDuties;
        @JSONField(name = "other_fees")
        private String otherFees;
    }
//    @Data
//    public static class DeclarationItem {
//        /**
//         * 必填
//         * 商品的文本描述。
//         */
//        private String description;
//        @JSONField(name = "eccn_ear99")
//        private String eccnEar99;
//        /**
//         * 必填
//         * 用于重量的单位。
//         *
//         * 枚举： "g" "kg" "lb" "oz"
//         */
//        @JSONField(name = "mass_unit")
//        private String massUnit;
//        private String metadata;
//        /**
//         * 必填
//         * 此商品的总重量，即数量 * 每件商品的重量。
//         */
//        @JSONField(name = "net_weight")
//        private BigDecimal netWeight;
//        /**
//         * 必填
//         * 商品的原产国。示例：或 . 所有接受的值都可以在 ISO 官方网站上找到。US DE
//         */
//        @JSONField(name = "origin_country")
//        private String originCountry;
//        /**
//         * 必填
//         * 此商品在您发送的货件中的数量。必须大于 0
//         */
//        private BigDecimal quantity;
//        @JSONField(name = "sku_code")
//        private String skuCode;
//        @JSONField(name = "hs_code")
//        private String hsCode;
//        @JSONField(name = "tariff_number")
//        private String tariffNumber;
//        /**
//         * 必填
//         * 此商品的总价值，即数量 * 每件商品的价值。
//         */
//        @JSONField(name = "value_amount")
//        private BigDecimal valueAmount;
//        /**
//         * 必填
//         * 用于value_amount的货币。使用官方 ISO 4217 货币代码，例如 或。USD EUR
//         */
//        @JSONField(name = "value_currency")
//        private String valueCurrency;
//    }
}
